home *** CD-ROM | disk | FTP | other *** search
- package asp.wizard;
-
- import asp.netobjects.nfx.ui.OrderedListModel;
- import asp.wizard.def.DefQuery;
- import asp.wizard.util.DataSourceDesc;
- import asp.wizard.util.OdbcDsnRetriever;
- import asp.wizard.util.UiUtil;
- import com.sun.java.swing.DefaultListModel;
- import com.sun.java.swing.ListModel;
- import java.lang.reflect.Array;
- import java.sql.Connection;
- import java.sql.DatabaseMetaData;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class WizDbManager {
- private static WizDbManager _instance;
- private Hashtable _connectionHash = new Hashtable();
- private Vector _dataSources;
-
- public static WizDbManager getInstance() {
- if (_instance == null) {
- _instance = new WizDbManager();
- }
-
- return _instance;
- }
-
- public static void releaseInstance() {
- if (_instance != null) {
- _instance.dispose();
- }
-
- _instance = null;
- }
-
- public void dispose() {
- if (this == _instance) {
- _instance = null;
- }
-
- Connection conn = null;
- Enumeration keys = this._connectionHash.keys();
-
- while(keys.hasMoreElements()) {
- try {
- conn = (Connection)this._connectionHash.get(keys.nextElement());
- if (conn != null) {
- conn.close();
- }
- } catch (SQLException e) {
- System.err.println(((Throwable)e).getMessage());
- }
- }
-
- this._connectionHash.clear();
- this._dataSources.removeAllElements();
- this._dataSources = null;
- }
-
- public Connection getConnection(String datasourcename, String username, String password) throws EWizDbManager {
- Connection conn = null;
-
- try {
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
- datasourcename = "jdbc:odbc:" + datasourcename;
- String key = datasourcename + username + password;
- conn = (Connection)this._connectionHash.get(key);
- if (conn == null) {
- conn = DriverManager.getConnection(datasourcename, username, password);
- this._connectionHash.put(key, conn);
- }
-
- return conn;
- } catch (Exception e) {
- throw new EWizDbManager(((Throwable)e).getMessage());
- }
- }
-
- public ResultSet getResultSet(Connection conn, String SQL) throws EWizDbManager {
- ResultSet rs = null;
-
- try {
- Statement stmt = conn.createStatement();
- rs = stmt.executeQuery(SQL);
- return rs;
- } catch (Exception e) {
- throw new EWizDbManager(((Throwable)e).getMessage());
- }
- }
-
- public DatabaseMetaData getDatabaseMetaData(String datasourcename, String username, String password) throws EWizDbManager {
- DatabaseMetaData wizDbMetaData = null;
-
- try {
- wizDbMetaData = this.getConnection(datasourcename, username, password).getMetaData();
- return wizDbMetaData;
- } catch (Exception e) {
- throw new EWizDbManager(((Throwable)e).getMessage());
- }
- }
-
- public static ResultSetMetaData getResultSetMetaData(ResultSet rs) throws EWizDbManager {
- ResultSetMetaData wizRSMetaData = null;
-
- try {
- wizRSMetaData = rs.getMetaData();
- return wizRSMetaData;
- } catch (Exception e) {
- throw new EWizDbManager(((Throwable)e).getMessage());
- }
- }
-
- public static OrderedListModel getTables(Connection conn, boolean excludeContainingSpace, boolean[] containingSpaceFound) throws EWizDbManager {
- OrderedListModel lm = new OrderedListModel();
- if (containingSpaceFound != null && containingSpaceFound.length > 0) {
- containingSpaceFound[0] = false;
- }
-
- try {
- DatabaseMetaData metaData = conn.getMetaData();
- String[] tableTypes = new String[]{"TABLE"};
- ResultSet rs = metaData.getTables((String)null, (String)null, (String)null, tableTypes);
- String tableName = null;
-
- while(rs.next()) {
- tableName = rs.getString(3);
- if (excludeContainingSpace && tableName.indexOf(" ") != -1) {
- if (containingSpaceFound != null && containingSpaceFound.length > 0) {
- containingSpaceFound[0] = true;
- }
- } else {
- lm.addElement(tableName);
- }
- }
-
- rs.close();
- return lm;
- } catch (SQLException e) {
- String msg = "Could not get table list from the database: " + ((Throwable)e).getMessage();
- throw new EWizDbManager(msg);
- }
- }
-
- public static ListModel getTables(ResultSet rs) throws EWizDbManager {
- OrderedListModel lm = new OrderedListModel();
- String tablename = "";
-
- try {
- ResultSetMetaData rsMetaData = rs.getMetaData();
-
- for(int i = 1; i <= rsMetaData.getColumnCount(); ++i) {
- tablename = rsMetaData.getTableName(i);
- Object[] result = lm.find(tablename);
- if ((Boolean)result[0]) {
- lm.addElement(tablename);
- }
- }
-
- return lm;
- } catch (Exception e) {
- throw new EWizDbManager("Could not get fields list from the recordset." + ((Throwable)e).getMessage());
- }
- }
-
- public static ListModel getFields(Connection conn, String tableName, DefaultListModel lm, boolean excludeContainingSpace, boolean[] containingSpaceFound) throws EWizDbManager {
- if (lm == null) {
- return null;
- } else {
- if (containingSpaceFound != null && containingSpaceFound.length > 0) {
- containingSpaceFound[0] = false;
- }
-
- try {
- DatabaseMetaData metaData = conn.getMetaData();
- String[] var10000 = new String[]{"TABLE"};
- ResultSet rs = metaData.getColumns((String)null, (String)null, tableName, (String)null);
- String fieldName = null;
-
- while(rs.next()) {
- fieldName = rs.getString(4);
- if (excludeContainingSpace && fieldName.indexOf(" ") != -1) {
- if (containingSpaceFound != null && containingSpaceFound.length > 0) {
- containingSpaceFound[0] = true;
- }
- } else {
- lm.addElement(fieldName);
- }
- }
-
- rs.close();
- return lm;
- } catch (Throwable var9) {
- throw new EWizDbManager("Could not get fields list from the database.");
- }
- }
- }
-
- public static ListModel getFields(ResultSet rs, boolean showTableName, DefaultListModel lm) throws EWizDbManager {
- if (lm == null) {
- return null;
- } else {
- String tablename = "";
-
- try {
- ResultSetMetaData rsMetaData = rs.getMetaData();
-
- for(int i = 1; i <= rsMetaData.getColumnCount(); ++i) {
- if (showTableName) {
- tablename = rsMetaData.getTableName(i) + ".";
- }
-
- lm.addElement(tablename + rsMetaData.getColumnName(i));
- }
-
- return lm;
- } catch (Exception e) {
- throw new EWizDbManager("Could not get fields list from the recordset." + ((Throwable)e).getMessage());
- }
- }
- }
-
- public static ListModel getFields(DefQuery defQuery, boolean showTableName, DefaultListModel lm) throws EWizDbManager {
- if (lm == null) {
- return null;
- } else {
- String tablename = "";
- Vector rsColumnInfos = defQuery.getResultSetColumnInfos();
- ResultSetColumnInfo rsci = null;
-
- for(int i = 0; i < rsColumnInfos.size(); ++i) {
- rsci = (ResultSetColumnInfo)rsColumnInfos.elementAt(i);
- if (showTableName) {
- tablename = rsci.getTableName() + ".";
- }
-
- lm.addElement(tablename + rsci.getColumnName());
- }
-
- return lm;
- }
- }
-
- public static ListModel getFields(ResultSet rs, String TableName, boolean showTableName, DefaultListModel lm) throws EWizDbManager {
- if (lm == null) {
- return null;
- } else {
- String tablename = "";
-
- try {
- ResultSetMetaData rsMetaData = rs.getMetaData();
-
- for(int i = 1; i <= rsMetaData.getColumnCount(); ++i) {
- if (rsMetaData.getTableName(i).compareTo(TableName) == 0) {
- if (showTableName) {
- tablename = TableName + ".";
- }
-
- lm.addElement(tablename + rsMetaData.getColumnName(i));
- }
- }
-
- return lm;
- } catch (Exception e) {
- throw new EWizDbManager("Could not get fields list from the recordset." + ((Throwable)e).getMessage());
- }
- }
- }
-
- public static int getDBTypes(DefQuery defQuery, String fieldName) throws EWizDbManager {
- int result = 0;
- Vector rsColumnInfos = defQuery.getResultSetColumnInfos();
- if (rsColumnInfos != null) {
- ResultSetColumnInfo rsci = null;
- boolean found = false;
-
- for(Enumeration e = rsColumnInfos.elements(); e.hasMoreElements() && !found; found = rsci.getColumnName().equals(fieldName)) {
- rsci = (ResultSetColumnInfo)e.nextElement();
- }
-
- if (found) {
- result = rsci.getColumnType();
- }
- }
-
- return result;
- }
-
- public Vector getDataSources() {
- if (this._dataSources == null) {
- DataSourceDesc[] dsnList = OdbcDsnRetriever.getDsnList();
- Vector dslist = new Vector();
- DataSourceDesc dsd = null;
- boolean isSqlServer = false;
- boolean isAccess = false;
-
- for(int i = 0; i < Array.getLength(dsnList); ++i) {
- dsd = dsnList[i];
- isSqlServer = dsd.getType().indexOf("SQL Server") != -1;
- isAccess = dsd.getType().indexOf("Access") != -1;
- if (isAccess || isSqlServer) {
- dslist.addElement(dsd);
- }
- }
-
- OrderedListModel olm = new OrderedListModelCaseInsensitive();
- int count = dslist.size();
-
- for(int i = 0; i < count; ++i) {
- olm.addElement(dslist.elementAt(i));
- }
-
- olm.setOrdered(true);
- dslist.removeAllElements();
-
- for(int i = 0; i < count; ++i) {
- dslist.addElement(((DefaultListModel)olm).getElementAt(i));
- }
-
- this._dataSources = dslist;
- }
-
- return this._dataSources;
- }
-
- public static String getDataTypeName(int typeVal) {
- String result = "";
- if (typeVal != -5 && typeVal != 3 && typeVal != 6 && typeVal != 2 && typeVal != 7 && typeVal != 5 && typeVal != 4) {
- if (typeVal != 1 && typeVal != -1 && typeVal != 12) {
- if (typeVal != -6 && typeVal != -7) {
- if (typeVal == 91 || typeVal == 93) {
- result = "date";
- }
- } else {
- result = "boolean";
- }
- } else {
- result = "string";
- }
- } else {
- result = "number";
- }
-
- return result;
- }
-
- public static Vector getInternalDataTypes() {
- Vector result = UiUtil.strToVector("string|number|boolean|date");
- return result;
- }
-
- public static Vector getResultSetColumnInfosFrom(ResultSet rs) throws EWizDbManager {
- Vector result = new Vector();
-
- try {
- ResultSetMetaData rsMetaData = rs.getMetaData();
- ResultSetColumnInfo rsci = null;
-
- for(int i = 1; i <= rsMetaData.getColumnCount(); ++i) {
- rsci = new ResultSetColumnInfo();
- rsci.setTableName(rsMetaData.getTableName(i));
- rsci.setColumnName(rsMetaData.getColumnName(i));
- rsci.setColumnType(rsMetaData.getColumnType(i));
- result.addElement(rsci);
- }
-
- return result;
- } catch (Exception e) {
- throw new EWizDbManager("Could not get fields info from the recordset." + ((Throwable)e).getMessage());
- }
- }
- }
-